home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCMania 73
/
PCMania CD73_1.iso
/
pcmania
/
render73
/
Taller
/
castli17
/
TOWN.INC
< prev
Wrap
Text File
|
1998-09-14
|
38KB
|
1,162 lines
/* Este fichero es la versión 1.7 de Castlib: una libreria de formas para la
creación de castillos con POV 3.0. La presente versión de este
"producto" puede ser utilizada libremente por cualquiera, pero dicho uso
implica la aceptación de las siguientes condiciones:
1) Si alguien emplea alguna de las estructuras de Castlib 1.7 debera
indicarlo asi al principio de su fichero escenico citando tambien el
nombre de su autor.
2) Si alguien realiza alguna modificación sobre los ficheros que componen
Castlib 1.7, debera citar el producto original y su procedencia e indicar
que lo utilizado es una mutación de Castlib.
3) Este producto no es shareware sino de PAGO. Si lo utilizas y algun
dia, casualmente o no, topas con el autor de Castlib, quedaras obligado a
invitar a dicho autor a una caña mientras le explicas como has utilizado
su producto.
4) El autor rechaza cualquier responsabilidad por cualquier desastre
informatico, neurologico, o de cualquier otro tipo que el uso de este
producto pudiera ocasionar a cualquier ser pensante con una capacidad
mental superior a la de una piedra. Se entiende asimismo que el usuario
renuncia a cualquier pretensión de reclamación, ahora y siempre, en este
o en cualquier otro universo (paralelo o no), sin excepción espacial ni
temporal, y liberando al autor en parte y en todo de cualquier obligación
futura.
5) La clausula 4 tambien se aplica a las entidades integrantes de
cualquier universo o entorno virtual simulado en cualquier sistema con
capacidad de procesamiento superior al de un abaco.
6) El uso de este producto y el incumplimiento de estas clausulas sera
castigado con medidas judiciales y ostracismo en PCmania. */
#include "colors.inc"
#include "woods.inc"
#include "metals.inc"
// ---------------------------------------------------
// PANELES CUADRADOS PARA LAS CASAS
// esta viga basica esta en pos. vertical
//#declare viga=box{<-1,-25,-2>,<1,25,0> texture{T_Wood14 scale<10,10,10>} }
#declare viga=box{<-1,-25,-2>,<1,25,0> texture{T_Wood17 scale<5,5,5>} }
//#declare tejas = texture { T_Wood12 scale<2,2,2>}
#declare tejas = texture { T_Wood14 scale<.25,.25,.25>}
#declare panelb=union{
box{<-25,0,0>,<25,50,2>
texture{texcastle1}}
object{viga rotate z*90 translate <0,50,0>}
object{viga rotate z*90 translate <0,2,0>}
object{viga translate <-25,25,0>}
object{viga translate <25,25,0>}
}
// dos vigas cruzadas en diagonal
#declare panel1=union{
object{panelb}
object{viga scale <1.5,1.33,1> rotate z*45 translate <0,25,-0.2>}
object{viga scale <1.5,1.33,1> rotate z*-45 translate <0,25,-0.3>}
}
// una viga en diagonal
#declare panel2=union{
object{panelb}
object{viga scale <1.5,1.33,1> rotate z*45 translate <0,25,-0.2>}
}
// una viga en diagonal
#declare panel3=union{
object{panelb}
object{viga scale <1.5,1.33,1> rotate z*-45 translate <0,25,-0.2>}
}
// dos vigas verticales
#declare panel4=union{
object{panelb}
object{viga translate <-10,25,0>}
object{viga translate <10,25,0>}
}
//una viga horizontal baja y dos ventanas de tipo 1
#declare panel5=union{
difference{
object{panelb}
object{recven1 translate <-12,25,-1>}
object{recven1 translate <12,25,-1>}
}
object{marcove1 translate <-12,25,3.75> }
object{marcove1 translate <12,25,3.75> }
object{viga rotate z*90 translate <0,15,0>}
}
//dos ventanitas cuadradas y una viga horizontal
#declare panel6=union{
difference{
object{panelb}
box{<-5,15,-10>,<5,25,10> translate <-9,0,0>}
box{<-5,15,-10>,<5,25,10> translate <9,0,0>}
}
box{<-4,12,-3>,<4,15,0> translate <-9,0,0> texture{textmur1}}
box{<-4,12,-3>,<4,15,0> translate <9,0,0> texture{textmur1}}
object{viga rotate z*90 translate <0,37,0>}
}
// con puerta
#declare panel7=union{
difference{
object{panelb}
object{recpuer1}
}
object{puerta translate<0,0,3>}
}
// con puerta y dos vigas verticales
#declare panel8=union{
object{panel7}
object{viga translate <-14,25,0>}
object{viga translate <14,25,0>}
}
// con puerta y ventanitas tipo 1
#declare panel9=union{
difference{
object{panelb}
object{recpuer1}
object{recven1 translate <-12,25,-1>}
object{recven1 translate <12,25,-1>}
}
object{puerta translate<0,0,3>}
object{marcove1 translate <-12,25,3.75>}
object{marcove1 translate <12,25,3.75>}
}
// con puerta a la izq. y ventanita cuadrada a la der.
#declare panel10=union{
difference{
object{panelb}
object{recpuer1 translate <-14,0,0>}
box{<-5,30,-10>,<5,40,10> translate <12,0,0>}
}
object{puerta translate<-14,0,3>}
box{<-4,27,-3>,<4,30,0> translate <12,0,0> texture{textmur1}}
}
// con puerta a la izq. y ventanita tipo 1 a la der.
#declare panel11=union{
difference{
object{panelb}
object{recpuer1 translate <-14,0,0>}
object{recven1 translate <12,25,-1>}
}
object{puerta translate<-14,0,3>}
object{marcove1 translate <12,25,3.75> }
}
// con puerta a la izq., ventanita tipo 1 a la der. y viga diagonal
#declare panel12=union{
object{panel11}
object{viga scale <1.5,1.33,1> rotate z*45 translate <0,25,-0.2>}
}
//dos ventanitas tipo 1 a la altura del 1er piso
#declare panel13=union{
difference{
object{panelb}
object{recven1 translate <-12,25,-1>}
object{recven1 translate <12,25,-1>}
}
object{marcove1 translate <-12,25,3.75> }
object{marcove1 translate <12,25,3.75> }
}
// dos vigas verticales
#declare panel14=union{
difference{
object{panelb}
object{recven1 translate <0,25,-1>}
}
object{marcove1 translate <0,25,3.75> }
object{viga translate <-14,25,0>}
object{viga translate <14,25,0>}
}
// ---------------------------------------------------
// PANELES DIAGONALES PARA LOS TEJADOS DE LAS CASAS
// con vigas diagonales
#declare rectej45=union{
plane{y,0 inverse translate<25,0,0> rotate z*63 translate<-25,0,0> }
plane{y,0 inverse translate<25,0,0> rotate z*63 translate<-25,0,0> rotate y*180}
}
#declare paneld1=difference{
union{
box{<-25,0,0>,<25,50,2>}
object{viga translate<0,25,0>}
object{viga scale <1.5,1.33,1> rotate z*45 translate <-25,25,-0.2>}
object{viga scale <1.5,1.33,1> rotate z*-45 translate <25,25,-0.3>}
// pigment{ image_map{tga "piedra2.tga" }
// translate <-.5,-.5,0> scale <14,14,1> }
texture{texcastle1}
}
object{rectej45}
}
// con ventana de tipo 1
#declare paneld2=union{
difference{
box{<-25,0,0>,<25,50,2>}
object{rectej45}
object{recven1 translate <0,12,-1>}
// pigment{ image_map{tga "piedra2.tga" }
// translate <-.5,-.5,0> scale <14,14,1> }
texture{texcastle1}
}
object{marcove1 translate <0,12,3.75> }
}
// con puerta (habra escaleras)
#declare paneld3=union{
difference{
box{<-25,0,0>,<25,50,2>}
object{rectej45}
object{recpuer1}
// pigment{ image_map{tga "piedra2.tga" }
// translate <-.5,-.5,0> scale <14,14,1> }
texture{texcastle1}
}
object{puerta translate<0,0,3>}
}
// panel diag. para lado izq.
#declare paneld4=difference{
object{panel2}
plane{y,0 inverse rotate z*45 translate <-25,0,0>}
}
// panel diag. para lado der.
#declare paneld5=difference{
object{panel3}
plane{y,0 inverse rotate z*45 translate <-25,0,0> rotate y*180}
}
// panel doble ( 4+5 ) con ventana central (desde -50X a +50X)
#declare paneld6=union{
difference{
union{
object{paneld4 translate <-25,0,0>}
object{paneld5 translate <25,0,0>}
}
object{recven1 translate <0,15,-1>}
}
object{marcove1 translate <0,15,3.75> }
}
// ---------------------------------------------------
// MACROS DE BUHARDILLAS Y TEJADOS DE LAS CASAS
#declare irectej1=difference{box{<-32,0,-31>,<33,50,31>
translate<25,0,0> rotate z*63 translate<-25,0,0> }
plane{y,51 inverse}
texture{tejas}
}
#declare rectej1=union{
object{irectej1}
object{irectej1 rotate y*180}
}
#declare mtej1=difference{
object{irectej1}
box{<-40,0,-40>,<40,60,40> translate<25,0,0> rotate z*63 translate<-28,0,0>}
}
// tejado para "casas" de 5 metros de ancho
#declare tejado1=union{
object{mtej1}
object{mtej1 rotate y*180}
texture{tejas}
}
// tejado de 45 grados
#declare irectej2=difference{box{<-41,0,-31>,<50,50,31>
rotate z*45 translate<0,25,0>}
plane{y,51 inverse}
texture{tejas}
}
#declare rectej2=union{
object{irectej2}
object{irectej2 rotate y*180}
}
// tejado para partes adosadas
#declare mtej2=difference{
object{irectej2}
box{<-50,0,-40>,<60,60,40> rotate z*45 translate<-3,25,0> }
texture{tejas}
}
// BUHARDILLAS
// panel superior de buhardillas
declare pansupbu=difference{
box{<-25,0,0>,<25,50,5>}
object{rectej45}
texture{textmur1}
}
#declare cachob1=union{
object{panelb translate<0,-50,-25>}
object{panelb translate<0,-50,-25> rotate y*90}
object{panelb translate<0,-50,-25> rotate y*180}
object{panelb translate<0,-50,-25> rotate y*270}
// parte superior
object{pansupbu translate<0,0,-25>}
object{pansupbu translate<0,0,-25> rotate y*180}
object{tejado1 texture { T_Wood18 scale<.2,.2,.2>}}
}
#declare buhardilla1=union{
difference{
object{cachob1 scale <.3,.3,.3> translate<0,15,0>}
object{recven1 translate <0,3,-4>}
}
object{cachob1 scale <.3,.3,.3> translate<0,15,15>}
object{marcove1 translate <0,3,-4> }
}
#declare buhardilla2=union{
difference{
object{cachob1 scale <.35,.3,.3> translate<0,15,0>}
object{recven1 translate <0,3,-8>}
}
object{cachob1 scale <.3,.3,.3> translate<0,15,15>}
object{marcove1 translate <0,3,-4> }
}
#declare buhar3_1=union{
object{buhardilla1 translate<-50,0,0>}
object{buhardilla1 }
object{buhardilla1 translate<50,0,0>}
}
#declare buhar3_2=union{
object{buhardilla1 translate<-50,0,0>}
object{buhardilla2 }
object{buhardilla1 translate<50,0,0>}
}
// TEJADOS de 15 metros de largo con y sin buhardillas
#declare tejado31=union{
object{tejado1 rotate y*90 translate<-50,0,0>}
object{tejado1 rotate y*90 translate<0,0,0>}
object{tejado1 rotate y*90 translate<50,0,0>}
}
#declare tejado32=union{
object{tejado31}
object{buhar3_1 translate<0,10,-16.5>}
object{buhar3_1 translate<0,10,-16.5> rotate y*180}
}
#declare tejado33=union{
object{tejado31}
object{buhar3_2 translate<0,10,-16.5>}
object{buhar3_2 translate<0,10,-16.5> rotate y*180}
}
// ---------------------------------------------------
//ESCALERAS
/* Este tramo de escaleras se usa para alcanzar las puertas colocadas a 5
metros de altura (de las casas). Sube de der. a izq., Tiene 1.5 metros
de ancho y 5 metros de largo. Consta de 25 peldaños */
#declare escal5m= union{
#declare pel=0
#declare alt=50
#declare xpel=-5
#while (pel!=20)
// box{<-25,alt-2.5,-15>,<xpel,alt,0>}
box{<-25,alt-2.5,-7.5>,<xpel,alt,7.5>}
#declare alt=alt-2.5
#declare pel=pel+1
#declare xpel=xpel+2.5
#end
// pigment{image_map{tga "piedra22.tga" map_type 0} scale <14,14,1>}
}
#declare escal5=merge{
difference{
object{escal5m}
box{<-26,-1,-7.49>,<xpel,51,7.49>}
pigment{Orange}
// pigment{image_map{tga "piedra22.tga" map_type 0} scale <14,14,1>}
}
intersection{
object{escal5m}
box{<-26,-1,-7.49>,<xpel,51,7.49>}
pigment{Orange}
// pigment{image_map{tga "piedra22.tga" map_type 0} scale <14,14,1>
// rotate x*90}
}
translate<0,0,-7.5>
}
//la misma escalera con puerta
#declare escal51=union{
difference{
object{escal5}
object{recpuer1 translate<-12,0,-12>}
}
object{puerta translate<-12,0,-12>}
}
//idem. con arco (en esquinas)
#declare escal52=union{
difference{
object{escal5}
object{recpuer1 translate<0,-10,0> scale <1.3,2.5,5>
translate<-14,10,-12>}
object{recpuer1 translate<0,-10,0> scale <1.3,2.5,1> rotate y*90
translate<-22,10,-4>}
}
object{marcopu translate<0,-10,0> scale <1.3,2.5,.5> translate<-14,10,-14>}
difference{
object{marcopu translate<0,-10,0> scale <1.3,2.5,.5> rotate y*90
translate<-24,10,-4>}
plane{z,0 inverse texture{textmur1} }
}
}
// ---------------------------------------------------
/* CASAS 5*10*10 (5 de ancho, 10 largo, 10 alto), simples (sin buhardillas,
puentes ni escaleras). Las casas se colocaran siempre con las puertas
paralelas al eje X (la calle) */
#declare macb1=union{
object{panel9 translate<-25,0,-25>}
object{panel5 translate<25,0,-25>}
object{panel4 rotate y*90 translate<-50,0,0>}
}
#declare planta1=union{
object{macb1}
object{macb1 rotate y*180}
}
#declare casa1=union{
object{planta1}
object{paneld1 rotate y*90 translate<-50,50,0>}
object{paneld1 rotate y*90 translate<-50,50,0> rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
}
#declare macb2=union{
object{panel8 translate<-25,0,-25>}
object{panel13 translate<25,0,-25>}
object{panel14 rotate y*90 translate<-50,0,0>}
}
#declare planta2=union{
object{macb2}
object{macb2 rotate y*180}
}
#declare casa2=union{
object{planta2}
object{paneld1 rotate y*90 translate<-50,50,0>}
object{paneld1 rotate y*90 translate<-50,50,0> rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
}
#declare macb3=union{
object{panel6 translate<-25,0,-25>}
object{panel10 translate<25,0,-25>}
object{panel2 rotate y*90 translate<-50,0,0>}
object{paneld1 rotate y*90 translate<-50,50,0>}
}
// Esta casa se colocara siguiendo el eje X (la calle)
#declare casa3=union{
object{macb3}
object{macb3 rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
}
#declare macb4=union{
object{panel5 translate<-25,0,-25>}
object{panel12 translate<25,0,-25>}
object{panel3 rotate y*90 translate<-50,0,0>}
object{paneld2 rotate y*90 translate<-50,50,0>}
}
#declare casa4=union{
object{macb4}
object{macb4 rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
}
#declare macb5=union{
object{panel3 translate<-25,0,-25>}
object{panel8 translate<25,0,-25>}
object{panel1 rotate y*90 translate<-50,0,0>}
object{paneld1 rotate y*90 translate<-50,50,0>}
}
#declare casa5=union{
object{macb5}
object{macb5 rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
}
// siguen las mismas 5 casas precedentes, pero con buhardillas
#declare buh4=union{ // macro para casas con buhardilla
object{buhardilla1 translate<-25,60,-18>}
object{buhardilla1 translate<25,60,-18>}
object{buhardilla1 translate<-25,60,-18> rotate y*180}
object{buhardilla1 translate<25,60,-18> rotate y*180}
}
#declare casa1b=union{
object{casa1}
object{buh4}
}
#declare casa2b=union{
object{casa2}
object{buh4}
}
#declare casa3b=union{
object{casa3}
object{buh4}
}
#declare casa4b=union{
object{casa4}
object{buh4}
}
#declare casa5b=union{
object{casa5}
object{buh4}
}
#declare macb6=union{
object{panel5 translate<-25,0,-25>}
object{panel5 translate<25,0,-25>}
object{panel9 rotate y*90 translate<-50,0,0>}
}
#declare planta3=union{
object{macb6}
object{macb6 rotate y*180}
}
#declare casa6=union{
object{planta3}
object{paneld1 rotate y*90 translate<-50,50,0>}
object{paneld1 rotate y*90 translate<-50,50,0> rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
rotate y*90
}
#declare macb7=union{
object{panel13 translate<-25,0,-25>}
object{panel14 translate<25,0,-25>}
object{panel8 rotate y*90 translate<-50,0,0>}
object{paneld2 rotate y*90 translate<-50,50,0>}
}
#declare casa7=union{
object{macb7}
object{macb7 rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
rotate y*90
}
#declare macb8=union{
object{panel3 translate<-25,0,-25>}
object{panel4 translate<25,0,-25>}
object{panel12 rotate y*90 translate<-50,0,0>}
object{paneld2 rotate y*90 translate<-50,50,0>}
}
#declare casa8=union{
object{macb8}
object{macb8 rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
rotate y*90
}
#declare macb9=union{
object{panel14 translate<-25,0,-25>}
object{panel14 translate<25,0,-25>}
object{panel11 rotate y*90 translate<-50,0,0>}
object{paneld1 rotate y*90 translate<-50,50,0>}
}
#declare casa9=union{
object{macb9}
object{macb9 rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
rotate y*90
}
#declare macb10=union{
object{panel5 translate<-25,0,-25>}
object{panel2 translate<25,0,-25>}
object{panel7 rotate y*90 translate<-50,0,0>}
object{paneld2 rotate y*90 translate<-50,50,0>}
}
#declare casa10=union{
object{macb10}
object{macb10 rotate y*180}
object{tejado1 rotate y*90 translate<-25,50,0>}
object{tejado1 rotate y*90 translate<25,50,0>}
rotate y*90
}
#declare casa6b=union{
object{casa6}
object{buh4 rotate y*90}
}
#declare casa7b=union{
object{casa7}
object{buh4 rotate y*90}
}
#declare casa8b=union{
object{casa8}
object{buh4 rotate y*90}
}
#declare casa9b=union{
object{casa9}
object{buh4 rotate y*90}
}
#declare casa10b=union{
object{casa10}
object{buh4 rotate y*90}
}
// ---------------------------------------------------
// ahora, usando las "plantas", crear ESTRUCTURAS LATERALES y COLGANTES
#declare macb11=union{
object{panel14 translate<-25,0,-25>}
object{panel14 translate<25,0,-25>}
object{panel14 rotate y*90 translate<-50,0,0>}
}
#declare planta4=union{
object{macb11}
object{macb11 rotate y*180}
}
#declare macb12=union{
object{panel5 translate<-25,0,-25>}
object{panel5 translate<25,0,-25>}
object{panel5 rotate y*90 translate<-50,0,0>}
}
#declare planta5=union{
object{macb12}
object{macb12 rotate y*180}
}
#declare macb13=union{
object{panel1 translate<-25,0,-25>}
object{panel1 translate<25,0,-25>}
object{panel1 rotate y*90 translate<-50,0,0>}
}
#declare planta6=union{
object{macb13}
object{macb13 rotate y*180}
}
#declare tejlat0=union{
object{mtej2 rotate y*90 translate <0,0,0>}
object{paneld4 rotate y*90 translate<-25,0,0>}
object{paneld5 rotate y*-90 translate<25,0,0>}
}
#declare tejlat1=union{
object{mtej2 rotate y*90 translate <-25,0,0>}
object{mtej2 rotate y*90 translate <25,0,0>}
object{paneld4 rotate y*90 translate<-50,0,0>}
object{paneld5 rotate y*-90 translate<50,0,0>}
}
// laterales de 2 pisos con escalera
#declare lateral1_2=union{
object{escal5 translate<70,0,7.5> rotate y*180}
object{planta1 rotate y*180}
object{planta3 translate <0,50,0>}
object{tejlat1 translate<0,100,0>}
rotate y*180
}
#declare lateral2_2=union{
object{escal52 translate<70,0,7.5> rotate y*180}
object{planta6 rotate y*180}
object{planta3 translate <0,50,0>}
object{tejlat1 translate<0,100,0>}
rotate y*180
}
//laterales de 2 pisos sin escalera
#declare lateral3_2=union{
object{planta2}
object{planta4 translate <0,50,0>}
object{tejlat1 translate<0,100,0>}
}
#declare lateral4_2=union{
object{planta3}
object{planta5 translate <0,50,0>}
object{tejlat1 translate<0,100,0>}
}
//laterales de un piso, sin puerta y 10 metros de largo
#declare lateral1_1=union{
object{planta4}
object{tejlat1 translate<0,50,0> }
rotate y*180
}
#declare lateral2_1=union{
object{planta5}
object{tejlat1 translate<0,50,0>}
rotate y*180
}
// laterales de un piso y 5 metros de largo
#declare lateral3_1=union{
object{panel14 translate<0,0,-25>}
object{panel1 rotate y*90 translate<-25,0,0>}
object{panel1 rotate y*-90 translate<25,0,0>}
object{tejlat0 scale <0,.50,0> translate<0,51,0> rotate y*180}
}
#declare lateral4_1=union{
object{panel5 translate<0,0,-25>}
object{panel1 rotate y*90 translate<-25,0,0>}
object{panel1 rotate y*-90 translate<25,0,0>}
object{tejlat0 scale <0,.50,0> translate<0,51,0> rotate y*180}
}
/*estructuras colgantes para casa grandes y torres. Son, ejem, las dos de
arriba mas el soporte */
#declare colgante1=union{
object{lateral3_1 translate<0,60,0>}
object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <0,0,29>}
}
#declare colgante2=union{
object{lateral4_1 translate<0,60,0>}
object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <0,0,29>}
}
#declare colgante3=union{
object{colgante1 translate<-25,0,0>}
object{colgante1 translate<25,0,0>}
object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <-25,0,29>}
object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <25,0,29>}
}
#declare colgante4=union{
object{colgante2 translate<-25,0,0>}
object{colgante2 translate<25,0,0>}
object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <-25,0,29>}
object{soporte1 translate <0,0,-6.5> scale <1,1,1.7> translate <25,0,29>}
}
// ---------------------------------------------------
/* CASAS 5*15*15 (5 de ancho, 15 largo, 15 alto), con buhardillas y posibles
puentes y escaleras. Primero definimos los "pisos" y luego las casas */
#declare mpiso1b=union{
object{panel9 rotate y*90 translate<-75,0,0>}
object{panel5 translate<-50,0,-25>}
object{panel1 translate<0,0,-25>}
object{panel5 translate<50,0,-25>}
}
#declare piso1b=union{
object{mpiso1b}
object{mpiso1b rotate y*180}
}
#declare mpiso1m=union{
object{panel5 rotate y*90 translate<-75,0,0>}
object{panel4 translate<-50,0,-25>}
object{panel1 translate<0,0,-25>}
object{panel4 translate<50,0,-25>}
}
#declare piso1m=union{
object{mpiso1m}
object{mpiso1m rotate y*180}
}
#declare casa21=union{
object{piso1b}
object{piso1m translate <0,50,0>}
object{tejado32 translate<0,100,0>}
object{paneld1 rotate y*90 translate<-75,100,0>}
object{paneld1 rotate y*-90 translate<75,100,0>}
}
#declare casa21a=union{
object{casa21}
object {lateral1_1 translate <-25,0,-50>}
}
#declare mpiso2b=union{
object{panel8 rotate y*90 translate<-75,0,0>}
object{panel13 translate<-50,0,-25>}
object{panel7 translate<0,0,-25>}
object{panel13 translate<50,0,-25>}
}
#declare piso2b=union{
object{mpiso2b}
object{mpiso2b rotate y*180}
}
#declare mpiso2m=union{
object{panel14 rotate y*90 translate<-75,0,0>}
object{panel3 translate<-50,0,-25>}
object{panel1 translate<0,0,-25>}
object{panel3 translate<50,0,-25>}
}
#declare piso2m=union{
object{mpiso2m}
object{mpiso2m rotate y*180}
}
#declare casa22=union{
object{piso2b}
object{piso2m translate <0,50,0>}
object{tejado33 translate<0,100,0>}
object{paneld1 rotate y*90 translate<-75,100,0>}
object{paneld1 rotate y*-90 translate<75,100,0>}
}
#declare mpiso3b=union{
object{panel12 rotate y*90 translate<-75,0,0>}
object{panel5 translate<-50,0,-25>}
object{panel2 translate<0,0,-25>}
object{panel5 translate<50,0,-25>}
}
#declare piso3b=union{
object{mpiso3b}
object{mpiso3b rotate y*180}
}
#declare mpiso3m=union{
object{panel1 rotate y*90 translate<-75,0,0>}
object{panel2 translate<-50,0,-25>}
object{panel11 translate<0,0,-25>}
object{panel2 translate<50,0,-25>}
}
#declare piso3m=union{
object{mpiso3m}
object{mpiso3m rotate y*180}
}
#declare casa23=union{
object{piso3b}
object{piso3m translate <0,50,0>}
object{escal51 translate<0,0,-25>}
object{escal51 translate<0,0,-25> rotate y*180}
object{tejado32 translate<0,100,0>}
object{paneld2 rotate y*90 translate<-75,100,0>}
object{paneld2 rotate y*-90 translate<75,100,0>}
}
#declare mpiso4b=union{
object{panel12 rotate y*90 translate<-75,0,0>}
object{panel1 translate<-50,0,-25>}
object{panel1 translate<0,0,-25>}
object{panel9 translate<50,0,-25>}
}
#declare piso4b=union{
object{mpiso4b}
object{mpiso4b rotate y*180}
}
#declare mpiso4m=union{
object{panel1 rotate y*90 translate<-75,0,0>}
object{panel5 translate<-50,0,-25>}
object{panelb translate<0,0,-25>}
object{panel5 translate<50,0,-25>}
}
#declare piso4m=union{
object{mpiso4m}
object{mpiso4m rotate y*180}
}
#declare casa24=union{
object{piso4b}
object{piso4m translate <0,50,0>}
object{tejado31 translate <0,100,0>}
object{paneld1 rotate y*90 translate<-75,100,0>}
object{paneld1 rotate y*-90 translate<75,100,0>}
}
#declare casa24a=union{
object{casa24}
object {lateral2_1 translate <25,0,-50>}
}
#declare mpiso5b=union{
object{panel8 rotate y*90 translate<-75,0,0>}
object{panelb translate<-50,0,-25>}
object{panel3 translate<0,0,-25>}
object{panel5 translate<50,0,-25>}
}
#declare piso5b=union{
object{mpiso5b}
object{mpiso5b rotate y*180}
}
#declare mpiso5m=union{
object{panel5 rotate y*90 translate<-75,0,0>}
object{panel12 translate<-50,0,-25>}
object{panel1 translate<0,0,-25>}
object{panel4 translate<50,0,-25>}
}
#declare piso5m=union{
object{mpiso5m}
object{mpiso5m rotate y*180}
}
#declare casa25=union{
object{piso5b}
object{piso5m translate <0,50,0>}
object{escal52 translate<-50,0,-25>}
object{escal52 translate<-50,0,-25> rotate y*180}
object{tejado33 translate<0,100,0>}
object{paneld2 rotate y*90 translate<-75,100,0>}
object{paneld2 rotate y*-90 translate<75,100,0>}
}
// ---------------------------------------------------
/* CASAS 10*15*15 (10 de ancho, 20 largo, 15 alto), con buhardillas y
posibles puentes y escaleras. Definiremos tiras de 2 y 4 paneles de
largo y, con ellas, crearemos los "pisos" */
// 9 tiras de 2 paneles de largo
#declare tira1_a=union{
object{panel1 translate<-25,0,0>}
object{panel1 translate<25,0,0>}
}
#declare tira2_a=union{
object{panel14 translate<-25,0,0>}
object{panel1 translate<25,0,0>}
}
#declare tira3_a=union{
object{panel12 translate<-25,0,0>}
object{panel2 translate<25,0,0>}
}
#declare tira4_a=union{
object{panel5 translate<-25,0,0>}
object{panel4 translate<25,0,0>}
}
#declare tira5_a=union{
object{panel2 translate<-25,0,0>}
object{panel3 translate<25,0,0>}
}
#declare tira6_a=union{
object{panel13 translate<-25,0,0>}
object{panel8 translate<25,0,0>}
}
#declare tira7_a=union{
object{panel5 translate<-25,0,0>}
object{panel5 translate<25,0,0>}
}
#declare tira8_a=union{
object{panel11 translate<-25,0,0>}
object{panel5 translate<25,0,0>}
}
#declare tira9_a=union{
object{panel1 translate<-25,0,0>}
object{panel4 translate<25,0,0>}
}
// 7 tiras de 4 paneles de largo
#declare tira1_b=union{
object{tira3_a translate<-50,0,0>}
object{tira4_a translate<50,0,0>}
}
#declare tira2_b=union{
object{tira1_a translate<-50,0,0>}
object{tira1_a translate<50,0,0>}
}
#declare tira3_b=union{
object{tira2_a translate<-50,0,0>}
object{tira2_a translate<50,0,0>}
}
#declare tira4_b=union{
object{tira5_a translate<-50,0,0>}
object{tira6_a translate<50,0,0>}
}
#declare tira5_b=union{
object{tira7_a translate<-50,0,0>}
object{tira7_a translate<50,0,0>}
}
#declare tira6_b=union{
object{tira5_a translate<-50,0,0>}
object{tira8_a translate<50,0,0>}
}
#declare tira7_b=union{
object{tira9_a translate<-50,0,0>}
object{tira9_a translate<50,0,0>}
}
//ahora 6 plantas (la b=es base y la m=planta media)
#declare floor1=union{
object{tira1_b translate<0,0,-50>}
object{tira7_a translate<0,0,-100> rotate y*90}
object{tira5_b translate<0,0,-50> rotate y*180}
object{tira7_a translate<0,0,-100> rotate y*270}
}
#declare floor2=union{
object{tira7_b translate<0,0,-50>}
object{tira9_a translate<0,0,-100> rotate y*90}
object{tira7_b translate<0,0,-50> rotate y*180}
object{tira9_a translate<0,0,-100> rotate y*270}
}
#declare floor3=union{
object{tira6_b translate<0,0,-50>}
object{tira1_a translate<0,0,-100> rotate y*90}
object{tira1_b translate<0,0,-50> rotate y*180}
object{tira7_a translate<0,0,-100> rotate y*270}
}
#declare floor4=union{
object{tira1_b translate<0,0,-50>}
object{tira9_a translate<0,0,-100> rotate y*90}
object{tira5_b translate<0,0,-50> rotate y*180}
object{tira9_a translate<0,0,-100> rotate y*270}
}
#declare floor5=union{
object{tira5_b translate<0,0,-50>}
object{tira7_a translate<0,0,-100> rotate y*90}
object{tira3_b translate<0,0,-50> rotate y*180}
object{tira1_a translate<0,0,-100> rotate y*270}
}
#declare floor6=union{
object{tira4_b translate<0,0,-50>}
object{tira3_a translate<0,0,-100> rotate y*90}
object{tira7_b translate<0,0,-50> rotate y*180}
object{tira1_a translate<0,0,-100> rotate y*270}
}
// el tejado para estos edificios
// tejado para "casas" de mas de 5 metros de ancho
#declare tejado2=union{
object{mtej2 rotate y*-90 translate <0,0,-25>}
object{mtej2 rotate y*-90 translate <0,0,-25> rotate y*180}
texture{tejas}
}
#declare pantej1=union{
object{paneld4 rotate y*90 translate <-100,0,25>}
object{paneld5 rotate y*90 translate <-100,0,-25>}
union{
object{paneld4 rotate y*90 translate <-100,0,25>}
object{paneld5 rotate y*90 translate <-100,0,-25>}
rotate y*180
}
}
#declare pantej2=union{
object{paneld6 rotate y*90 translate <-100,0,0>}
object{paneld6 rotate y*-90 translate <100,0,0>}
}
#declare tejado41=union{
object{tejado2 translate<-75,0,0>}
object{tejado2 translate<-25,0,0>}
object{tejado2 translate<25,0,0>}
object{tejado2 translate<75,0,0>}
object{pantej2}
}
#declare tejado42=union{
object{tejado41}
object{buhar3_1 translate <0,8,-38>}
object{buhar3_1 translate <0,8,-38> rotate y*180}
}
//casa simple de 1 piso y 10*20 metros
#declare casa31=union{
object {floor6 }
object {tejado42 translate<0,50,0> }
}
#declare casa32=union{
object {floor3 }
object {escal51 translate<-75,0,-50> }
object {floor4 translate<0,50,0> }
object {tejado42 translate<0,100,0> }
}
#declare casa33=union{
object {floor6 }
object {floor1 translate<0,50,0> rotate y*180}
object {tejado42 translate<0,100,0> }
}
#declare casa33a=union{
object {casa33 }
object {lateral1_1 translate <-50,0,-75>}
object {lateral1_1 translate <0,0,-125> rotate y*-90}
}
#declare casa34=union{
object {floor6 }
object {floor2 translate<0,50,0> rotate y*180}
object {floor2 translate<0,100,0> rotate y*180}
object {tejado42 translate<0,150,0> }
}
#declare casa34a=union{
object {casa34 }
object {lateral1_2 translate <-50,0,-75>}
}
#declare casa34b=union{
object {casa34a }
object {lateral2_1 translate <0,0,-125> rotate y*-90}
}
#declare casa34c=union{
object {casa34a }
object {colgante3 translate <0,0,-125> rotate y*-90}
}
#declare casa35=union{
object {floor1 }
object {floor5 translate<0,50,0> }
object {floor5 translate<0,100,0> rotate y*180}
object {tejado42 translate<0,150,0> }
}
#declare casa35a=union{
object {casa35 }
object {colgante1 translate <25,0,-50>}
object {lateral2_1 translate <0,0,-125> rotate y*-90}
}
//Seguidamente creamos secciones para un par de torres cuadradas de 5 y 10
//metros de lado, construidas ambas con paneles (Estas torres pueden usar
//los soportes de las estructuras colgantes)
//En primer lugar 4 secciones para torres de 5 metros
#declare secbpan51=union{ //seccion base (puerta en -Z)
object{panel8 translate<0,0,-25>}
object{panel5 translate<0,0,-25> rotate y*180}
object{panel4 translate<0,0,-25> rotate y*90}
object{panel3 translate<0,0,-25> rotate y*-90}
}
#declare secmpan51=union{ //seccion media sin ventanas
object{panel1 translate<0,0,-25>}
object{panel1 translate<0,0,-25> rotate y*180}
object{panel4 translate<0,0,-25> rotate y*90}
object{panel4 translate<0,0,-25> rotate y*-90}
}
#declare secmpan52=union{ //seccion media con 4 ventanas
object{panel5 translate<0,0,-25>}
object{panel5 translate<0,0,-25> rotate y*180}
object{panel14 translate<0,0,-25> rotate y*90}
object{panel14 translate<0,0,-25> rotate y*-90}
}
#declare secmpan53=union{ //seccion media con una ventana
object{panel1 translate<0,0,-25>}
object{panel2 translate<0,0,-25> rotate y*180}
object{panel3 translate<0,0,-25> rotate y*90}
object{panel14 translate<0,0,-25> rotate y*-90}
}
//tejado piramidal
#declare tejpir5=union{
object{paneld1 translate<0,0,-25>}
object{paneld1 translate<0,0,-25> rotate y*180}
object{tejado1 }
scale <1,1.30,1>
}
//un ejemplo de torre (unos 12 metros de altura
#declare torpan5_1=union{
object{secbpan51}
object{secmpan52 translate<0,50,0>}
object{secmpan51 translate<0,100,0> rotate y*90}
object{tejpir5 translate<0,150,0>}
}
#declare torpan5_2=union{
object{secbpan51}
object{secmpan51 translate<0,50,0>}
object{secmpan52 translate<0,100,0>}
object{secmpan53 translate<0,150,0>}
object{tejpir5 translate<0,200,0>}
}
// ahora 4 secciones para torres de 10 metros de lado
#declare secbpan101=union{ //seccion base (puertas en +X y +Z)
object{tira4_a translate<0,0,-50>}
object{tira6_a translate<0,0,-50> rotate y*90}
object{tira8_a translate<0,0,-50> rotate y*180}
object{tira2_a translate<0,0,-50> rotate y*-90}
}
#declare secmpan101=union{ //2 lados sin ventanas y otro con
object{tira9_a translate<0,0,-50>}
object{tira9_a translate<0,0,-50> rotate y*90}
object{tira7_a translate<0,0,-50> rotate y*-90}
object{tira7_a translate<0,0,-50> rotate y*180}
}
#declare secmpan102=union{ //una sola ventana
object{tira1_a translate<0,0,-50>}
object{tira5_a translate<0,0,-50> rotate y*90}
object{tira9_a translate<0,0,-50> rotate y*-90}
object{tira2_a translate<0,0,-50> rotate y*180}
}
#declare secmpan103=union{ //un lado sin ventanas y otro con
object{tira1_a translate<0,0,-50>}
object{tira1_a translate<0,0,-50> rotate y*90}
object{tira2_a translate<0,0,-50> rotate y*-90}
object{tira2_a translate<0,0,-50> rotate y*180}
}
#declare tejpir10=union{
object{tejado2 translate<-25,0,0>}
object{tejado2 translate<25,0,0>}
object{paneld6 rotate y*90 translate <-50,0,0>}
object{paneld6 rotate y*-90 translate <50,0,0>}
scale <1,1.30,1>
}
#declare torpan10_1=union{ //torre de 27 metros
object{secbpan101}
object{secmpan101 translate<0,50,0>}
object{secmpan103 translate<0,100,0>}
object{secmpan101 translate<0,150,0>}
object{tejpir10 translate<0,200,0>}
object{torpan5_1 translate<0,0,-60>}
object{torpan5_1 rotate y*90 translate<0,0,-50> rotate y*90}
object{torpan5_1 rotate y*90 translate<0,0,-50> rotate y*-90}
object{torpan5_1 translate<0,0,-60> rotate y*180}
}
#declare torpan10_2=union{ //torre de 27 metros con colgantes
object{secbpan101}
object{secmpan101 translate<0,50,0>}
object{secmpan103 translate<0,100,0>}
object{colgante1 translate<0,50,-50>}
object{colgante2 translate<0,50,-50> rotate y*90}
object{colgante2 translate<0,50,-50> rotate y*-90}
object{colgante1 translate<0,50,-50> rotate y*180}
object{secmpan101 translate<0,150,0>}
object{tejpir10 translate<0,200,0>}
}